什么是多态
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
多态性是指对象具有多种表现形式的能力,我们在面向对象中使用多态最常见的方式就是使用父类定义的引用指向一个子类的对象实例。
在Java中,所有的对象都具有多态性,因为任何对象都继承自java.lang.Object类。访问一个对象的唯一方法就是通过引用型变量。引用型变量只能有一种类型,且它的类型一旦被声明该引用型变量的类型就不能被改变了。
引用型变量可以重置并重新引用其他对象(前提是该引用没有被声明为final
),即可以引用和它类型相同的或者相兼容的对象。它可以声明为类类型或者接口类型。
接下来让我们通过示例来了解Java的多态。
代码示例
public interface Vegetarian {} //食草动物应具备的特性
public class Animal {} //动物基类
public class Deer extends Animal implements Vegetarian {}
因为Deer类具有多重继承,所以它具有多态性。以上示例解析如下:
- 一个 Deer IS-A(是一个)Animal
- 一个 Deer IS-A(是一个)Vegetarian
- 一个 Deer IS-A(是一个)Deer
- 一个 Deer IS-A(是一个)Object
当我们将引用型变量应用于Deer对象时,下面的声明是合法的:
Deer d = new Deer();
Animal a = d;
Vegetarian v = d;
Object o = d;
所有的引用型变量d
, a
, v
, o
都指向堆中相同的Deer对象。
在线练习
{$ activeFileHint $}